Sébastien Calvet
2019-05-17
Le package “oceanis” permet de réaliser des cartes d’études et d’analyses à partir de données monolocalisées ou bilocalisées.
Plusieurs types de représentations cartographiques sont possibles :
Monolocalisées
ronds proportionnels pour représenter des données en volume (par exemple des effectifs) ;
analyse en classes (ou choroplète) pour représenter des données en ratio (par exemple une évolution) ;
association des ronds proportionnels et d’une analyse en classes : l’analyse dans les ronds ou les ronds sur l’analyse ;
typologie pour représenter des données catégorisées (par exemple la typologie des aires urbaines).
Bilocalisées
oursins pour représenter des flux entre deux territoires (par exemple les flux domicile-travail) ;
flèches joignantes pour représenter des flux entre deux territoires, leurs volumes et leurs directions ;
flèches saphirs pour représenter des flux d’entrées et de sorties d’un territoire par rapport à d’autres.
Ce document présente quelques exemples d’utilisation du package “oceanis” en mettant l’accent sur les différents enchaînements possibles entre les fonctions du package.
Pour charger des données, le package propose une fonction lecture_fichier(file) qui permet d’importer des fichiers de divers formats :
.dbf (foreign::read.dbf) ;
.xls (xlsx::read.xlsx) ;
.ods (readODS::read_ods) ;
.csv (utils::read.table) ;
.rds (readRDS) ;
.rda ou .rdata (load).
library(oceanis)
## Loading required package: shiny
## Loading required package: shinyBS
donnees_monoloc <- lecture_fichier(file = system.file("data/donnees_monoloc.rda", package = "oceanis"))Pour information, la table donnees_monoloc est un data.frame contenant 6 variables, le code des départements, les libellés, la population en 2010, en 2015, la variation annuelle moyenne de la population entre 2010 et 2015 et le code région d’appartenance. Son champ est la France métropolitaine.
Pour calculer une variable de classes à partir de variables en volume présentes dans le tableau de données, vous pouvez passer par l’une des fonctions suivantes :
calcul_ratio(data, var1, var2) pour calculer un ratio entre 2 variables en volume ;
calcul_tx_evol_global(data, var1, var2) pour calculer le taux d’évolution global entre deux périodes ;
calcul_tx_evol_ann_moy(data, var1, var2, nbAnnees) pour calculer le taux d’évolution annuel moyen entre deux périodes ;
calcul_part_ens(data, var) pour calculer la part dans l’ensemble ;
calculette(data, formule = NULL) pour entrer manuellement votre propre formule de calcul ;
Ces fonctions ajoutent au tableau de données la colonne de variable de classes.
Vous pouvez également visualiser la distribution d’une variable de classes :
library(oceanis)
print(system.file("data/donnees_monoloc.rda", package = "oceanis"))
## [1] "D:/Program_Files/R/R-3.3.3/library/oceanis/data/donnees_monoloc.rda"
# chargement des données
donnees_monoloc <- lecture_fichier(file = system.file("data/donnees_monoloc.rda", package = "oceanis"))
# visualisation de la distribution de la variable VAR_AN_MOY
distrib_variable(data = donnees_monoloc ,varRatio = "VAR_AN_MOY", nbClasses = 4)Les objets géométriques utilisés dans les fonctions du package “oceanis” sont des objets sf issus du package sf (Simple Features for R).
En plus de la géométrie, les objets sf peuvent contenir des données de type data.frame ou tibble.
Pour charger un fond de carte de format ShapeFile (.shp) en un objet R de format sf, il suffit d’appeler la fonction sf::read_sf ou sf::st_read.
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, proj.4 4.9.3
# chemin du fond de carte .shp
path_to_shp <- system.file("extdata","dep_francemetro_2018.shp", package = "oceanis")
# import de l'objet sf
depm <- st_read(dsn = path_to_shp, quiet = TRUE)
# visualisation de la géométrie
# modification des marges
par(mai = c(0,0,0,0))
# contour des départements de France métropolitaine
plot(st_geometry(depm))Vous n’avez pas à votre disposition de fond de carte .shp correspondant à votre zonage d’études. Vous pouvez le générer à partir d’autres fonds de carte disponibles. Par exemple, à partir de zonages administratifs (communes, départements, régions…) ou d’études (intercommunalités, aires urbaines, zones d’emploi…).
La fonction zonage_a_facon permet de créer son propre zonage à façon.
L’exemple ci-dessous permet de resconstituer les zones d’emploi des Bouches-du-Rhône à partir d’un fond communal.
library(oceanis)
library(sf)
# chargement des données :
# données à façon avec variable de regroupement (ZE2010)
donnees_a_facon <- lecture_fichier(file = system.file("data/donnees_a_facon.rda", package = "oceanis"))
# fond communal des départements 13, 30, 83 et 84
com_dep_13_30_83_84 <- lecture_fichier(file = system.file("data/com_dep_13_30_83_84.rda", package = "oceanis"))
# chemin du fond de carte .shp
path_to_shp <- system.file("extdata","dep_francemetro_2018.shp", package = "oceanis")
# import en objet sf
depm <- st_read(dsn = path_to_shp, quiet = TRUE, stringsAsFactors = FALSE)
# création du zonage des zones d'emploi des Bouches-du-Rhône (partie entière des ze)
ze13etplus <- zonage_a_facon(fondMaille = com_dep_13_30_83_84, groupe = donnees_a_facon,
idMaille = "DEPCOM", idGroupe = "ZE2010", libGroupe = "LIB_ZE2010",
fondContour = NULL, dom = "0")
# création du zonage des zones d'emploi des Bouches-du-Rhône (partie tronquée des ze au contour du département)
ze13 <- zonage_a_facon(fondMaille = com_dep_13_30_83_84, groupe = donnees_a_facon, idMaille = "DEPCOM",
idGroupe = "ZE2010", libGroupe = "LIB_ZE2010",
fondContour = depm[depm$code=="13",], dom = "0")
# visualisation de la géométrie
# modification des marges
par(mai = c(0,0,0,0))
# fond des ze des Bouches-du-Rhône en 1er pour fixer le niveau de zoom, en bleu
plot(st_geometry(ze13etplus), col = "powderblue", border = "transparent")
# fond de la partie tronquée des ze des Bouches-du-Rhône, en rouge
plot(st_geometry(ze13), col = "lightsalmon", border = "transparent", add = TRUE)
# contour des communes
plot(st_geometry(com_dep_13_30_83_84), col = "transparent", border = "lavender", add = TRUE)
# contour de la partie tronquée des ze des Bouches-du-Rhône, en rouge
plot(st_geometry(ze13), col = "transparent", border = "indianred", lwd = 3, add = TRUE)
# contour des ze des Bouches-du-Rhône, en bleu
plot(st_geometry(ze13etplus), col = "transparent", border = "steelblue", lwd = 3, add = TRUE)Les fonctions shiny_() permettent de visualiser les cartes dans un environnement web utilisant la technologie R-Shiny (package shiny Web Application Framework for R). Cet environnement permet de modifier à la volée le paramétrage de la carte (nombre de classes, méthode de calcul des classes, taille des ronds, des flèches, filtres sur les données etc…). La carte est alors actualisée à chaque modification de paramètres.
Les cartes sont interactives car elles sont dans le format leaflet (package leaflet Leaflet for R). Il est possible de se déplacer, de zoomer sur la carte et de cliquer sur les territoires pour faire apparaître des informations sous forme d’info-bulles (ou pop-up).
Voici deux exemples de cartes réalisées avec les fonctions shiny_classes_ronds() pour une représentation de données monolocalisées avec des ronds propotionnels sur une analyse en classes et shiny_joignantes() pour une représentation de données bilocalisées avec visualisation de la direction et du volume du flux.
library(oceanis)
library(sf)
# chargement des données
donnees_monoloc <- lecture_fichier(file = system.file("data/donnees_monoloc.rda", package = "oceanis"))
# import du fond des départements
depm <- st_read(dsn = system.file("extdata","dep_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# import du fond des régions
regm <- st_read(dsn = system.file("extdata","reg_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# import du fond de France métropolitaine
fram <- st_read(dsn = system.file("extdata","francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
shiny_classes_ronds(data = donnees_monoloc, fondMaille = depm[depm$reg %in% c("93","94"),], fondMailleElargi = depm, fondContour = fram, fondSuppl = regm, idData = "COD_DEP",varVolume = "POP_2015", varRatio = "VAR_AN_MOY")library(oceanis)
library(sf)
library(shiny)
# chargement des données
donnees_biloc <- lecture_fichier(file = system.file("data/donnees_biloc.rda", package = "oceanis"))
# import du fond des régions
regm <- st_read(dsn = system.file("extdata","reg_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# import du fond des départements
depm <- st_read(dsn = system.file("extdata","dep_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# import du fond de France métropolitaine
fram <- st_read(dsn = system.file("extdata","francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
shiny_joignantes(data = donnees_biloc, fondMaille = regm, typeMaille = "REG", fondContour = fram, fondSuppl = depm, idDataDepart = "REG_DEPART", idDataArrivee = "REG_ARRIVEE", varFlux = "MIGR", decalageAllerRetour = 10, decalageCentroid = 20)Les fonctions leaflet_() proposent des cartes en sorties utilisant la technologie leaflet (package leaflet Leaflet for R) comme pour les fonctions shiny. Ces fonctions sont davantage paramétrables et la modification des cartes (ajout d’une légende, modification de couleurs, etc…) est possible par d’autres fonctions dédiées.
Ci-dessous, un exemple de cheminement possible pour réaliser une carte complète avec leaflet. Cette carte utilise des données monolocalisées avec une analyse en classes dans les ronds.
library(oceanis)
library(sf)
library(leaflet)
# chargement des données
donnees_monoloc <- lecture_fichier(file = system.file("data/donnees_monoloc.rda", package = "oceanis"))
# import du fond des départements
depm <- st_read(dsn = system.file("extdata","dep_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# import du fond des régions
regm <- st_read(dsn = system.file("extdata","reg_francemetro_2018.shp", package = "oceanis"), quiet = TRUE, stringsAsFactors = FALSE)
# affichage de la carte
map <- leaflet_ronds_classes(data = donnees_monoloc, fondMaille = depm[depm$reg=="93",], fondMailleElargi = depm, fondSuppl = regm, idData = "COD_DEP", varVolume = "POP_2015", varRatio = "VAR_AN_MOY")
map
# affichage du rayon du rond le plus grand en mètres
rayon_ronds(map)
## [1] 23668.46
# affichage de la carte avec des rayons de ronds plus grands
map <- leaflet_ronds_classes(data = donnees_monoloc, fondMaille = depm[depm$reg == "93",], fondMailleElargi = depm, fondSuppl = regm, idData = "COD_DEP", varVolume = "POP_2015", varRatio = "VAR_AN_MOY", rayonRond = 29000, rapportRond = NULL)
# affichage du rapport du rond le plus grand, à récupérer pour permettre la comparaison de plusieurs cartes
rapport_ronds(map)
## [1] 1310165
map
# ajout de la légende des ronds (position par défaut)
map <- add_legende_ronds(map = map, titre = "Population en 2015", zoom = 6)
## [INFO] Les coordonnées de la légende des ronds sont : longitude (x) =
## 7.71612696800038 degré ; latitude (y) = 45.1268480101767 degré
# ajout de la légende des classes (position par défaut)
map <- add_legende_classes(map = map, titre = "Variation ann.moy. 2010-2015", zoom = 6)
## [INFO] Les coordonnées de la légende des classes sont : longitude (x) =
## 7.71612696800038 degré ; latitude (y) = 42.9820332433454 degré
map
# modification de la position de la légende des ronds et du niveau de zoom
map <- add_legende_ronds(map = map, titre = "Population en 2015", lng = 8, lat = 44, zoom = 8)
## [INFO] Les coordonnées de la légende des ronds sont : longitude (x) = 8
## degré ; latitude (y) = 44 degré
# modification de la position de la légende des classes et du niveau de zoom
map <- add_legende_classes(map = map, titre = "Variation ann.moy. 2010-2015", lng = 7.5, lat = 43.5, zoom = 8)
## [INFO] Les coordonnées de la légende des classes sont : longitude (x) = 7.5
## degré ; latitude (y) = 43.5 degré
map
# ajout d'une source à la carte
map <- add_source(map = map, source = "Source : INSEE - RP2016")
# ajout d'un titre à la carte
map <- add_titre(map = map, titre = "Population des départements de la région Provence-Alpes-Côte d'Azur en 2015 et son évolution depuis 2010")
map
# affichage de la palette par défaut
recup_palette(stylePalette = "defaut")
## [[1]]
## [1] "#5A0A14" "#82141B" "#9B231C" "#B24B1D" "#D47130" "#E4A75A" "#F2CE93"
##
## [[2]]
## [1] "#C9DAF0" "#95BAE2" "#5182B6" "#005289" "#003269" "#001E5A" "#000050"
# affichage de la palette InseePremiere
recup_palette(stylePalette = "InseePremiere")
## [[1]]
## [1] "#7F0029" "#CC1543" "#DE635B" "#F79C85" "#FDE3DE"
##
## [[2]]
## [1] "#ECF4D8" "#CDD78C" "#91B778" "#549534" "#005941"
# modification de la couleur de bordure des ronds
map <- set_couleur_ronds(map = map, colBorder = "grey")
# modification du style de la palette
map <- set_couleur_classes(map = map, stylePalette = "InseePremiere")
map